home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 5 / Gekikoh Dennoh Club Vol. 5 (Japan).7z / Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin / internet / tcppack / tcppackb.lzh / src / libnetwork / user.c < prev   
C/C++ Source or Header  |  1994-08-05  |  4KB  |  204 lines

  1. /*
  2.  * user.c
  3.  *
  4.  * Copyright (C) 1994 First Class Technology.
  5.  */
  6.  
  7. #include<stdio.h>
  8. #include<stdlib.h>
  9. #include<string.h>
  10.  
  11. #include"tcpipdrv.h"
  12. #include"network.h"
  13.  
  14. _ti_func search_ti_entry (void);
  15.  
  16. static char _num[] = "0123456789abcdef";
  17.  
  18. /************************************************
  19.  *                        *
  20.  ************************************************/
  21. int
  22. isipaddr (char *src)
  23. {
  24.   if (strspn (src, "0123456789.") == strlen (src))
  25.     return 1;
  26.   else
  27.     return 0;
  28. }
  29.  
  30. /************************************************
  31.  *                        *
  32.  ************************************************/
  33. struct netent *
  34. getnetbyname (char *name)
  35. {
  36.   _ti_func func = search_ti_entry ();
  37.   if (func)
  38.     return (struct netent *)func (_TI_getnetbyname, (long *)name);
  39.   return NULL;
  40. }
  41.  
  42. /************************************************
  43.  *                        *
  44.  ************************************************/
  45. struct netent *
  46. getnetbyaddr (long net, int type)
  47. {
  48.   _ti_func func = search_ti_entry ();
  49.   if (func)
  50.     {
  51.       long argv[2];
  52.  
  53.       argv[0] = net;
  54.       argv[1] = (long)type;
  55.  
  56.       return (struct netent *)func (_TI_getnetbyaddr, argv);
  57.     }
  58.   return NULL;
  59. }
  60.  
  61. /************************************************
  62.  *                        *
  63.  ************************************************/
  64. struct servent *
  65. getservbyport (int port, char *proto)
  66. {
  67.   _ti_func func = search_ti_entry ();
  68.   if (func)
  69.     {
  70.       long argv[2];
  71.  
  72.       argv[0] = port;
  73.       argv[1] = (long)proto;
  74.  
  75.       return (struct servent *)func (_TI_getservbyport, argv);
  76.     }
  77.   return NULL;
  78. }
  79.  
  80. /************************************************
  81.  *                        *
  82.  ************************************************/
  83. struct servent *
  84. getservbyname (char *name, char *proto)
  85. {
  86.   _ti_func func = search_ti_entry ();
  87.   if (func)
  88.     {
  89.       long argv[2];
  90.  
  91.       argv[0] = (long)name;
  92.       argv[1] = (long)proto;
  93.  
  94.       return (struct servent *)func (_TI_getservbyname, argv);
  95.     }
  96.   return NULL;
  97. }
  98.  
  99. /************************************************
  100.  *                        *
  101.  ************************************************/
  102. struct protoent *
  103. getprotobyname (char *name)
  104. {
  105.   _ti_func func = search_ti_entry ();
  106.   if (func)
  107.     return (struct protoent *)func (_TI_getprotobyname, (long *)name);
  108.  
  109.   return NULL;
  110. }
  111.  
  112. /************************************************
  113.  *                        *
  114.  ************************************************/
  115. struct protoent *
  116. getprotobynumber (int num)
  117. {
  118.   _ti_func func = search_ti_entry ();
  119.   if (func)
  120.     return (struct protoent *)func (_TI_getprotobynumber, (long *)num);
  121.  
  122.   return NULL;
  123. }
  124.  
  125. /************************************************
  126.  *                        *
  127.  ************************************************/
  128. long
  129. a2n_ipaddr (char *s)
  130. {
  131.   long n;
  132.   int i;
  133.  
  134.   n = 0;
  135.   for (i = 24; i >= 0; i -= 8)
  136.     {
  137.       n |= (long) atoi (s) << i;
  138.       s = strchr (s, '.');
  139.       if (!s)
  140.     break;
  141.       s++;
  142.     }
  143.   return n;
  144. }
  145.  
  146. /************************************************
  147.  *                        *
  148.  ************************************************/
  149. char *
  150. n2a_ipaddr (long a, char *dst)
  151. {
  152.   sprintf (dst, "%d.%d.%d.%d", (a >> 24) & 0xff, (a >> 16) & 0xff, (a >> 8) & 0xff, a & 0xff);
  153.   return dst;
  154. }
  155.  
  156. /************************************************
  157.  *                        *
  158.  ************************************************/
  159. char *
  160. a2n_eaddr (char *s, char *d, int max)
  161. {
  162.   char *p, *q;
  163.   int i;
  164.  
  165.   p = d;
  166.   q = s;
  167.   for (i = 0; i < max; i++)
  168.     {
  169.       *p++ = (unsigned char) atoi (q);
  170.       q = strchr (q, ':');
  171.       if (!s)
  172.     break;
  173.       q++;
  174.     }
  175.   if (i + 1 < max)
  176.     *p++ = '\0';
  177.  
  178.   return d;
  179. }
  180.  
  181. /************************************************
  182.  *                        *
  183.  ************************************************/
  184. char *
  185. n2a_eaddr (char *s, char *dst, int len)
  186. {
  187.   int i;
  188.   char *p, *q;
  189.  
  190.   p = dst;
  191.   q = s;
  192.   for (i = 0; i < len; i++)
  193.     {
  194.       unsigned char c;
  195.       c = *q++;
  196.       *p++ = _num[(c >> 4) & 0xf];
  197.       *p++ = _num[c & 0xf];
  198.       *p++ = ':';
  199.     }
  200.   *(p - 1) = '\0';
  201.  
  202.   return dst;
  203. }
  204.